from PIL import Image

def process_image(image_path, output_red, output_green, output_blue):
    """
    处理图像：生成只保留红色、绿色和蓝色通道的三个图像。
    
    参数:
        image_path (str): 输入图像的路径。
        output_red (str): 只保留红色通道的图像保存路径。
        output_green (str): 只保留绿色通道的图像保存路径。
        output_blue (str): 只保留蓝色通道的图像保存路径。
    """
    # 1. 打开图像
    image = Image.open(image_path)

    # 2. 获取图像的像素数据
    pixels = image.load()

    # 3. 创建三个副本，分别用于处理红色、绿色和蓝色通道
    red_image = image.copy()
    green_image = image.copy()
    blue_image = image.copy()

    red_pixels = red_image.load()
    green_pixels = green_image.load()
    blue_pixels = blue_image.load()

    # 4. 遍历图像的每个像素
    for i in range(image.width):
        for j in range(image.height):
            r, g, b = pixels[i, j]  # 获取当前像素的 RGB 值

            # 只保留红色通道
            red_pixels[i, j] = (r, 0, 0)

            # 只保留绿色通道
            green_pixels[i, j] = (0, g, 0)

            # 只保留蓝色通道
            blue_pixels[i, j] = (0, 0, b)

    # 5. 保存处理后的图像
    red_image.save(output_red)
    green_image.save(output_green)
    blue_image.save(output_blue)

    print(f"只保留红色通道的图像已保存到: {output_red}")
    print(f"只保留绿色通道的图像已保存到: {output_green}")
    print(f"只保留蓝色通道的图像已保存到: {output_blue}")

    # 6. 显示处理后的图像（可选）
    red_image.show()
    green_image.show()
    blue_image.show()


# 调用函数处理图像
input_image_path = r"C:\Users\DELL\Desktop\22\galaxy-full.jpg"  # 输入图像路径
output_red_path = r"C:\Users\DELL\Desktop\22\galaxy-red.jpg"    # 只保留红色通道的图像路径
output_green_path = r"C:\Users\DELL\Desktop\22\galaxy-green.jpg"  # 只保留绿色通道的图像路径
output_blue_path = r"C:\Users\DELL\Desktop\22\galaxy-blue.jpg"   # 只保留蓝色通道的图像路径

process_image(input_image_path, output_red_path, output_green_path, output_blue_path)